javascript
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} headA
* @param {ListNode} headB
* @return {ListNode}
*/
var getIntersectionNode = function (headA, headB) {
let curA = headA
let curB = headB
const set = new Set()
let count = 0
while (curA || curB) {
if (curA) {
set.add(curA)
count++
if (set.size !== count) {
return curA
}
curA = curA.next
}
if (curB) {
set.add(curB)
count++
if (set.size !== count) {
return curB
}
curB = curB.next
}
}
return null
}